package com.yidu.hbatsams.service.Impl;
import com.github.pagehelper.PageHelper;
import com.yidu.hbatsams.dao.AtsEmpAthleteMapper;
import com.yidu.hbatsams.dao.AtsSchemeAthleteMapper;
import com.yidu.hbatsams.dao.AtsSchemeMapper;
import com.yidu.hbatsams.domain.AtsEmpAthlete;
import com.yidu.hbatsams.domain.AtsScheme;
import com.yidu.hbatsams.domain.AtsSchemeAthlete;
import com.yidu.hbatsams.service.AtsSchemeFsService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * @描述：方案service
 * @backage:com.yidu.hbatsams.service.Impl
 * @Author: 冯双
 * @Date: 2019/11/30
 **/
@Service
public class AtsSchemeFsImpl implements AtsSchemeFsService {
    Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * 方案dao层接口
     */
    @Resource
    private AtsSchemeMapper daoMapper;
    /**
     * 方案运动员dao层接口
     */
    @Resource
    private AtsSchemeAthleteMapper atsSchemeAthleteMapper;
    /**
     * 运动员dao层接口
     */
    @Resource
    private AtsEmpAthleteMapper atsEmpAthleteMapper;

    /**
     * 查询所有方法
     * @param atsScheme 方案表对象
     * @param pageNum 当前页
     * @param pageSize 长度
     * @return 方案集合
     */
    @Override
    public List<AtsScheme> selectAll(AtsScheme atsScheme,Integer pageNum,Integer pageSize) {
        //结束页
        PageHelper.offsetPage(pageNum,pageSize);
        //开始页
        PageHelper.startPage(pageNum,pageSize);
        //调用查询全部方法
        return daoMapper.selectAllFs(atsScheme);
    }

    /**
     * 新增运动营养方案
     * @param record 方案表对象
     * @return 影响行数
     */
    @Override
    public int insert(AtsScheme record) {
        //创建字符串，将Remark赋值到athleteId
        String athleteId = record.getRemark();
        //创建int
        int rows = 0;
        //设置CreatTime
        record.setCreatTime(new java.sql.Date(System.currentTimeMillis()));
        //设置SchemeType
        record.setSchemeType("运动营养方案");
        //调用新增方法
        rows = daoMapper.insertSelective(record);
        //判断athleteId非空
        if (athleteId != null && !"".equals(athleteId)) {
            //运动员id字符串改为字符串数组
            String[] athleteIds = athleteId.split(",");

            //循环id数组
            for (int i = 0; i < athleteIds.length; i++) {
                String id = athleteIds[i];
                //根据循环查询运动员id、姓名
                AtsEmpAthlete atsEmpAthlete = atsEmpAthleteMapper.selectByPrimaryKey(Integer.valueOf(id));
                //新建一个方案和运动员关联的对象
                AtsSchemeAthlete atsSchemeAthlete = new AtsSchemeAthlete();
                //运动员id赋值
                atsSchemeAthlete.setAthleteId(atsEmpAthlete.getAthleteId());
                //运动员姓名赋值
                atsSchemeAthlete.setAthleteName(atsEmpAthlete.getAthleteName());
                //方案id赋值
                atsSchemeAthlete.setSchemeId(record.getSchemeId());
                //方案名字赋值
                atsSchemeAthlete.setSchemeName(record.getSchemeName());
                //创建人赋值
                atsSchemeAthlete.setCreater(record.getCreater());
                //创建时间
                atsSchemeAthlete.setCreatTime(new java.sql.Date(System.currentTimeMillis()));
                //是否已读状态赋值
                atsSchemeAthlete.setIsRead("0");
                //设置为有效
                atsSchemeAthlete.setIsva(1);
                //备注为营养方案
                atsSchemeAthlete.setRemark("运动营养方案");
                //循环增加方案运动员关联表
                atsSchemeAthleteMapper.insertSelective(atsSchemeAthlete);
                //递加
                rows++;
            }
        }

        return rows;
    }

    /**
     * 修改方案
     * @param record 方案表对象
     * @return 影响行数
     */
    @Override
    public int updateByPrimaryKeySelective(AtsScheme record) {
        //根据SchemeId删除方案运动员表
        atsSchemeAthleteMapper.deleteAthleteId(record.getSchemeId());
        //将Remark赋值给创建的字符串对象athleteId
        String athleteId = record.getRemark();
        //判断athleteId非空
        if (athleteId != null && !"".equals(athleteId)) {
            //运动员id字符串改为字符串数组
            String[] athleteIds = athleteId.split(",");
            //循环id数组
            for (int i = 0; i < athleteIds.length; i++) {
                //获取当前id
                String id = athleteIds[i];
                //根据循环查询运动员表
                AtsEmpAthlete atsEmpAthlete = atsEmpAthleteMapper.selectByPrimaryKey(Integer.valueOf(id));
                //新建一个方案和运动员关联表的对象
                AtsSchemeAthlete atsSchemeAthlete = new AtsSchemeAthlete();
                //运动员id赋值
                atsSchemeAthlete.setAthleteId(atsEmpAthlete.getAthleteId());
                //运动员姓名赋值
                atsSchemeAthlete.setAthleteName(atsEmpAthlete.getAthleteName());
                //方案id赋值
                atsSchemeAthlete.setSchemeId(record.getSchemeId());
                //方案名字赋值
                atsSchemeAthlete.setSchemeName(record.getSchemeName());
                //创建人赋值
                atsSchemeAthlete.setCreater(record.getCreater());
                //创建时间
                atsSchemeAthlete.setCreatTime(new java.sql.Date(System.currentTimeMillis()));
                //是否已读状态赋值
                atsSchemeAthlete.setIsRead("0");
                //设置有效
                atsSchemeAthlete.setIsva(1);
                //备注为营养方案
                atsSchemeAthlete.setRemark("运动营养方案");
                //循环增加方案运动员关联表
                atsSchemeAthleteMapper.insertSelective(atsSchemeAthlete);
            }
        }
        //调用修改方法
        return daoMapper.updateByPrimaryKeySelective(record);
    }

    /**
     * 根据主键id查询
     * @param schemeId 方案表主键id
     * @return 方案表对象
     */
    @Override
    public AtsScheme selectByPrimaryKey(Integer schemeId) {
        return daoMapper.selectByPrimaryKey(schemeId);
    }

    /**
     * 查询行数
     * @param atsScheme 方案表对象
     * @return  总行数
     */
    @Override
    public int selectAllFsCount(AtsScheme atsScheme) {
        return daoMapper.selectAllFsCount(atsScheme);
    }

    /**
     * 中心领导查询全部
     * @param atsScheme 方案表对象
     * @param pageNum 当前页
     * @param pageSize 长度
     * @return 方案表对象集合
     */
    @Override
    public List<AtsScheme> selectAuditAllFs(AtsScheme atsScheme, Integer pageNum, Integer pageSize) {
        PageHelper.offsetPage(pageNum,pageSize);
        PageHelper.startPage(pageNum,pageSize);
        return daoMapper.selectAuditAllFs(atsScheme);
    }

    /**
     * 中心领导查询全部总行数
     * @param atsScheme 方案表对象
     * @return 总行数
     */
    @Override
    public int selectAuditAllFsCount(AtsScheme atsScheme) {
        return daoMapper.selectAuditAllFsCount(atsScheme);
    }

    /**
     * 专家查询全部
     * @param atsScheme 方案表对象
     * @param pageNum 当前页
     * @param pageSize 长度
     * @return  方案表对象集合
     */
    @Override
    public List<AtsScheme> selectExpertAllFs(AtsScheme atsScheme, Integer pageNum, Integer pageSize) {
        PageHelper.offsetPage(pageNum,pageSize);
        PageHelper.startPage(pageNum,pageSize);
        return daoMapper.selectExpertAllFs(atsScheme);
    }

    /**
     * 专家查询全部总行数
     * @param atsScheme 方案表对象
     * @return 总行数
     */
    @Override
    public int selectExpertAllFsCount(AtsScheme atsScheme) {
        return daoMapper.selectExpertAllFsCount(atsScheme);
    }

    /**
     * 运动员查询全部
     * @param atsScheme 方案表对象
     * @param pageNum 当前页
     * @param pageSize 长度
     * @return 方案表对象集合
     */
    @Override
    public List<AtsScheme> selectAthleteAllFs(AtsScheme atsScheme, Integer pageNum, Integer pageSize) {
        PageHelper.offsetPage(pageNum,pageSize);
        PageHelper.startPage(pageNum,pageSize);
        return daoMapper.selectAthleteAllFs(atsScheme);
    }

    /**
     * 运动员查询全部总行数
     * @param atsScheme 方案表对象
     * @return 总行数
     */
    @Override
    public int selectAthleteAllFsCount(AtsScheme atsScheme) {
        return daoMapper.selectAthleteAllFsCount(atsScheme);
    }

    /**
     *
     * @param id 方案表主键id
     * @return
     */
    @Override
    public int deleteByPrimaryKey(int id) {
        return daoMapper.deleteScheme(id);
    }


    /**
     * 反馈是修改方案表
     * @param record 方案表对象
     * @return 影响行数
     */
    @Override
    public int feedbackUpdateByPrimaryKeySelective(AtsScheme record) {
        //时间格式
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        //获取当前时间
        record.setResultTime(simpleDateFormat.format(new java.sql.Date(System.currentTimeMillis())));
        //调用修改方法
        return daoMapper.updateByPrimaryKeySelective(record);
    }

}
